/* 
 * File:   SendReceiveCommand.h
 * Author: Bram
 *
 * Created on January 23, 2013, 7:29 PM
 */

#ifndef SENDRECEIVECOMMAND_H
#define	SENDRECEIVECOMMAND_H

#include "Command.h"

class SendReceiveCommand : public Command
{
public:
    SendReceiveCommand();
    SendReceiveCommand(const char *);
    SendReceiveCommand(const SendReceiveCommand& orig);
    virtual ~SendReceiveCommand();
    virtual Command* createNew() = 0;
    bool isValid();
    
    virtual void ExcecuteServerReceiveCommand(TcpSocket* dasSocket, queue<Command *>& commandQueue) = 0;
    virtual void ExcecuteServerSendCommand(TcpSocket* dasSocket, queue<Command *>& commandQueue) = 0;
    
    virtual void ExcecuteClientReceiveCommand(TcpSocket* dasSocket, queue<Command *>& commandQueue) = 0;
    virtual void ExcecuteClientSendCommand(TcpSocket* dasSocket, queue<Command *>& commandQueue) = 0;
    
    void SendFile(TcpSocket*, queue<Command *>& commandQueue);
    void ReceiveFile(TcpSocket*, queue<Command *>& commandQueue);

};

#endif	/* SENDRECEIVECOMMAND_H */

